#include <iostream>
#include "GTKViews.h"
#include "EditorController.h"
#include "Campania.h"

#include "Box.h"
#include "EnemySpawner.h"
#include "MetalWall.h"
#include "CampaniaXml.h"

#include "../common/Utils.h"

int main(int argc, char* argv[]) {
	Properties properties;
	CampaniaXml *campaign_loader = NULL;
	try {
		campaign_loader = new CampaniaXml();
	} catch(ParserException &e){
		std::cerr << "Error en la lectura del archivo de campanias" << std::endl;
		std::cerr << e.error() << std::endl;
		return 1;
	}
	Campania* c = NULL;
	if (argc == 1) {
		// Nueva campania
		c = new Campania(0, 2, "", 1,
					"");
	} else {
		int id = Utils::stringToInt(argv[1]);
		vector<Campania *> campaniasDisponibles = campaign_loader->getCampanias();
		vector<Campania *>::iterator it;
		for (it = campaniasDisponibles.begin(); it != campaniasDisponibles.end(); ++it){
			if ((*it)->getId() == id){
				c = *it;
				break;
			}
		}
	}
	if (!c){
		std::cerr << "No se encontro el ID de campania" << std::endl;
	} else {
		GTKViews gtkViews(argc, argv);
		EditorController controller(gtkViews, campaign_loader);
		controller.setCampania(c);
		gtkViews.init(&controller);
		controller.run();
	}
	return 0;
}

